package com.up360.rapidcalc.global
{
	import flash.display.Sprite;
	import flash.display.Stage;

	/**
	 * 作者:郎福涛
	 * 日期:2012-4-4 下午08:29:58
	 * 说明:显示层管理
	 */	
	public class LayerManager
	{
		/**
		 * 禁止对主显示层操作的次数,可能多个应用对主显示层禁止操作,为了防止一个应用要求对主显示可操作而使其它应用对其禁止无效
		 */		
		private static var forbidMainLayerHandleTimes:int=0;
		/**
		 * 舞台
		 */		
		public static var stage:Stage;
		/**
		 * 弹出框层,此层与主场景同级,父容器同为stage
		 */		
		public static var boxLayer:Sprite=new Sprite;
		/**
		 * 主容器
		 */		
		public static var mainLayer:Sprite;
		/**
		 * 进度条层
		 */		
		public static var loadingLayer:Sprite=new Sprite;
		/**
		 * 场景层
		 */		
		public static var sceneLayer:Sprite=new Sprite;
		
		public function LayerManager()
		{
		}
		/**
		 * 初始化
		 * @param mainLayer
		 */		
		public static function initialize(mainLayer:Sprite):void{
			LayerManager.mainLayer=mainLayer;
			LayerManager.stage=mainLayer.stage;
			
			mainLayer.addChild(sceneLayer);
			
			loadingLayer.mouseChildren=false;
			loadingLayer.mouseEnabled=false;
			mainLayer.addChild(loadingLayer);
			
			stage.addChild(boxLayer);
		}
		/**
		 * 禁止对主场景的操作,但可以操作box层,
		 * 在载入时或弹出提示框时调用此方法
		 */		
		public static function forbidMainLayerHandle():void{
			forbidMainLayerHandleTimes++;
			if(forbidMainLayerHandleTimes==1){
				mainLayer.mouseChildren=false;
				mainLayer.mouseEnabled=false;
			}
		}
		/**
		 * 恢复主场景的操作
		 * @parma isCheckForbidMainLayerHandleTimes 是否检查对主显示层禁止的次数,如果检查,禁止次次数会减一,只到禁止次数为0时才解除禁止,如果不检查直接设置禁止次数为零并解除禁止操作
		 */		
		public static function resumeMainLayerHandle(isCheckForbidMainLayerHandleTimes:Boolean=true):void{
			if(isCheckForbidMainLayerHandleTimes)
				forbidMainLayerHandleTimes--;
			else
				forbidMainLayerHandleTimes=0;
			
			if(forbidMainLayerHandleTimes==0){
				mainLayer.mouseChildren=true;
				mainLayer.mouseEnabled=true;
			}	
		}
		
	}
}